package com.mark.web.stars.mapper;

import com.mark.web.stars.entity.po.Memo;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * @Description: 备忘录表的dao层接口定义
 * @Author: Mark
 * @CreateDate: 2019/3/26 21:25
 * @Version: 2.0
 * @Copyright : 豆浆油条个人非正式工作室
 */
public interface MemoMapper {

    /**
     * 新增一条记录
     * @param record ：待插入备忘录实例
     * @return ：如果成功插入则返回1
     */
    int insert(Memo record);

    /**
     * 根据id删除记录
     * @param id ：待删除的记录id
     * @param currentUserId ：当前用户id
     * @return ：返回影响的行数，如果成功删除返回1
     */
    int delete(@Param("id") Integer id,
               @Param("currentUserId") Integer currentUserId);

    /**
     * 根据当前用户id和id更新记录
     * @param record ：待更新的备忘录实例
     * @return ：返回影响的行数，如果成功更新返回1
     */
    int updateByPrimaryKeySelective(Memo record);

    /**
     * 更新记录的状态
     * @param id ：待更新的记录的id
     * @param currentUserId ：当前用户id，即该记录所属用户id
     * @param status ：待更新的状态值
     * @return ：返回影响的行数，如果成功更新返回1
     */
    int updateMemoStatus(@Param("id") Integer id,
                         @Param("currentUserId") Integer currentUserId,
                         @Param("status") Integer status);

    /**
     * 根据主键id，查询记录
     * @param id ：主键id
     * @return ：记录实例
     */
    Memo selectByPrimaryKey(Integer id);

    /**
     * 根据搜索条件查询记录
     * @param map ：请求参数
     * <pre>
     * map：中的参数
     * |--------------------------------------------|
     * |   name             necessary     type      |
     * |--------------------------------------------|
     *     searchStartDate   false         Date      搜索开始时间
     *     searchEndDate     false         Date      搜索结束时间
     *     status            true          int       备忘录状态（0：全部；1：待办;2:处理中；3：结束）
     *     currentUserId     true          int       当前用户id
     * </pre>
     */
    List<Memo> selectMemosByCondition(Map<String, Object> map);


}